package movTeclado;

import Logica.*;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import GUI.*;

/**
 * Clase teclado
 * @author Jonathan Fritz - Santiago Salem - Kevin Schweitzer.
 */
public class teclado extends mente implements KeyListener {

		private frameJuego frame;
		private boolean disparo=false;
		
	
		/**
		 * Constructor de la clase teclado.
		 *  @param j, indica el Juego actual.
		 */
		public teclado (Juego j){
			juego = j;
			frame=juego.getFrameJuego();
			Thread h1=new Thread(this);
			h1.start();
		}
		
		
		
		public void run(){
			while(juego.juegoFuncionando()){
				if(disparo){
					this.juego.dispararJugador(this.nave.getLocation());
					disparo=false;
					this.frame.repaint();
					try{
						sleep(200);
					}
					catch(Exception e){}
				}
			}
	
		}
	
	
		/**
		 * Prepara la mente.
		 */
		public void preparar() {
			// TODO Auto-generated method stub
	
		}
	
		/**
		 * Da comienzo a la ejecucion de la mente.
		 */
		public void jugar() {
			// TODO Auto-generated method stub
	
		}
		
		/**
		 * Dependiendo la tecla que fue presionada, se ejecuta la respuesta correspondiente.
		 * @param arg0, evento capturado.
		 */
		public void keyPressed(KeyEvent arg0) {
			int anchoJuego = frame.getWidth() - nave.getWidth();
			Point pos = this.nave.getLocation();    
			int factor = nave.getVelocidad();
	
			switch(arg0.getKeyCode()) {
	
	
	
			case KeyEvent.VK_LEFT: {
	
				int v = pos.x - factor;
				if (v >= 1)
					pos.setLocation(v, pos.y);
				break;
			}
			case KeyEvent.VK_RIGHT: {
	
				int v = pos.x + factor;
				if (v<=anchoJuego)
					pos.setLocation(v, pos.y);
				break;
			}
			case KeyEvent.VK_SPACE: {                                	
	
				disparo=true;
	
				break;
			}
			case KeyEvent.VK_A: {                                	
	
				this.juego.usarBomba();
	
				break;
			}
			
			
	
			}
			this.nave.setLocation(pos);
			this.frame.repaint();
	
		}
	
		/**
		 * Dependiendo la tecla que fue soltada, se ejecuta la respuesta correspondiente.
		 * @param arg0, evento capturado.
		 */
		public void keyReleased(KeyEvent arg0) {
			// TODO Auto-generated method stub
	
		}
	
		/**
		 * Dependiendo la tecla que fue tipeada, se ejecuta la respuesta correspondiente.
		 * @param arg0, evento capturado.
		 */
		public void keyTyped(KeyEvent arg0) {
			// TODO Auto-generated method stub
		}
}
	
